package com.yss.reportworld.domain.kettle;

import java.util.Date;
import java.util.List;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.DateConverter;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 采集任务对象 rw_db_etl_job_task
 *
 * @author yss
 * @date 2023-07-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_etl_job_task")
public class EtlJobTask extends Model<EtlJobTask> {
    public static final String SHEET_NAME = "任务列表";
    /**
     * 技术主键
     */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 采集任务名称
     */
    @ExcelProperty("任务名称")
    @TableField("TASK_NAME")
    @ExcelValid(message = "【任务列表】【任务名称】不能为空")
    private String taskName;

    /**
     * 排序
     */
    @ExcelProperty("排序")
    @TableField("ORDER_NUM")
    @ExcelValid(message = "【任务列表】【排序】不能为空")
    private Integer orderNum;

    /**
     * 采集调度频率;日 月 年 季
     */
    @ExcelProperty(value = "调度频率", converter = IntegerConverter.class/*, readConverterExp = "1=日,2=月,3=季,4=年"*/)
    @EasyExcel(readConverterExp = "1=日,2=月,3=季,4=年")
    @TableField("FREQUENCY")
    @ExcelValid(message = "【任务列表】【调度频率】不能为空")
    private Integer frequency;

    /**
     * 采集日期类型;工作日, 自然日
     */
    @ExcelProperty(value = "采集日期类型", converter = IntegerConverter.class/*, readConverterExp = "1=工作日,2=自然日"*/)
    @EasyExcel(readConverterExp = "1=工作日,2=自然日")
    @TableField("FREQUENCY_DATE_TYPE")
    @ExcelValid(message = "【任务列表】【采集日期类型】不能为空")
    private Integer frequencyDateType;

    /**
     * 参数分组CODE(工作流的参数分组功能)
     */
    @ExcelIgnore
    @TableField("PARAM_GROUP_CODE")
    private String paramGroupCode;

    @ExcelProperty("参数分组")
    @TableField(exist = false)
    @ExcelValid(message = "【任务列表】【参数分组】不能为空")
    private String groupName;
    /**
     * 备注
     */
    @ExcelProperty("备注")
    @TableField("REMARK")
    private String remark;


    /**
     * 状态 1启用 0禁用
     */
    @ExcelProperty(value = "状态", converter = IntegerConverter.class/*, readConverterExp = "0=无效,1=正常"*/)
    @EasyExcel(readConverterExp = "0=无效,1=正常")
    @TableField("STATUS")
    @ExcelValid(message = "【任务列表】【状态】不能为空")
    private Integer status;


    /**
     * 执行频率值
     */
    @ExcelProperty("自定义报送频率值")
    @TableField("FREQUENCYNUM")
    private Integer frequencynum;

    /**
     * 执行频率类型
     */
    @ExcelProperty(value = "自定义报送频率类型", converter = IntegerConverter.class/*, readConverterExp = "1=天(自然日),2=月,3=季度,4=年,5=周,6=一次"*/)
    @EasyExcel(readConverterExp = "1=天(自然日),2=月,3=季度,4=年,5=周,6=一次")
    @TableField("FREQUENCYTYPE")
    private Integer frequencytype;

    /**
     * 开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "自定义报送开始时间", converter = DateConverter.class)
    @TableField("STARTAT")
    private Date startat;
    /**
     * 终止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelProperty(value = "自定义报送终止时间", converter = DateConverter.class)
    @TableField("TERMINATEDAT")
    private Date terminatedat;

    /**
     * 类型 1：调度任务 2: 普通任务
     */
    @ExcelIgnore
    @TableField("TYPE")
    private Integer type;

    /**
     * 业务类型;ETL_RESOURCE_TYPE
     */
    @ExcelIgnore
    @TableField("BUSINESS_TYPE")
    private String businessType;

    /**
     * 父级采集任务ID;当个性化方案的时候， 存储标准采集任务ID或个性化标注任务ID
     */
    @ExcelIgnore
    @TableField("PARENT_TASK_ID")
    private String parentTaskId;


    /**
     * 层级之间是否串并行执行 0 串行执行 1 并行执行
     */
    @ExcelIgnore
    @TableField("IS_SERIAL")
    private Integer isSerial;

    /**
     * 执行时间
     */
    @ExcelIgnore
    @TableField("EXECUTIONTIME")
    private String executiontime;

    @ExcelIgnore
    @TableField(exist = false)
    private List<String> ids;

    @ExcelIgnore
    @TableField(exist = false)
    private String dataBaseType;

    @ExcelIgnore
    @TableField(exist = false)
    private String hisVersion;


    @ExcelIgnore
    @TableField(exist = false)
    private String customerId;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;


}
